package com.study.rocketmq.service;

import com.study.rocketmq.message.MQMessage;

/**
 * @ClassName: RocketMQService
 * @Description: Rocket MQ 对应服务封装
 * @author: limingxing
 * @Date: 2020-12-15 18:28
 */
public interface IRocketMQService {

    /**
     * 同步发送消息<br/>
     * <p>
     * 当发送的消息很重要是，且对响应时间不敏感的时候采用sync方式;
     *
     * @param message 发送消息实体类
     */
    boolean send(MQMessage message);
    /**
     * 异步发送消息，异步返回消息结果<br/>
     * <p>
     * 当发送的消息很重要，且对响应时间非常敏感的时候采用async方式；
     *
     * @param message 发送消息实体类
     */
    void asyncSend(MQMessage message);
    /**
     * 直接发送发送消息，不关心返回结果，容易消息丢失，适合日志收集、不精确统计等消息发送;<br/>
     * <p>
     * 当发送的消息不重要时，采用one-way方式，以提高吞吐量；
     *
     * @param message 发送消息实体类
     */
    void syncSendOrderly(MQMessage message);
}
